#ifndef UTILS_HPP_GUARD
#define UTILS_HPP_GUARD

#include "../utils/logger.hpp"

#include <string>
#include <vector>
#include <iostream>
#include <boost/foreach.hpp>

namespace mashine { namespace utils {

bool is_variable_name(std::string & variable);

bool is_constant_name(std::string & constant);

bool is_predicate_name(std::string & predicate);

bool is_analogy_name(std::string & analogy);

template <typename _Entity>
std::string & vector_to_string(std::vector<_Entity *> const & v)
{
	std::string * buff = new std::string;
	
	BOOST_FOREACH(_Entity * p, v)
	{
		buff->append( p->toString() );
		buff->append( ", " );
	}
	
	if (v.size() != 0) 
	{
		buff->erase(buff->size() - 2, 2);
    }
	
	std::cout<<"!\n";
	
	return *buff;
}

}}

#endif